package cn.com.huzo.repository.manufacture;

import cn.com.huzo.model.entities.manufacture.RequisitionSlipHeaderEntity;
import huzofw.repository.GenericRepository;
import java.util.List;
import java.util.Map;

/**
 * 领料单数据访问对象接口。
 *
 * @author 吴旭
 */
public interface RequisitionSlipHeaderRepository extends GenericRepository<RequisitionSlipHeaderEntity, Long> {

    /**
     * 得到新的单据号（根据规则自动生成）
     * <p>
     * @return
     */
    String fetchNewBillNo();

    /**
     * 取得领料单数据（包括审核权限标记）
     *
     * @param headerId 领料单标识
     * @param currentUserId 当前用户
     * @param workFlowId 领料单审核工作流标识
     * @return
     */
    RequisitionSlipHeaderEntity fetchByKey(Long headerId, Long currentUserId, Long workFlowId);


    /**
     * 根据当前领料单的款号得到对应的生产指示书的成品颜色(导出用)
     * <p>
     * @param headerId 领料单标识
     * @return 成品颜色数据
     */
    List<Map<String, Object>> fetchProductColour(Long headerId);
    
    /**
     * 审核领料单
     *
     * @param headerId 领料单标识
     * @param workFlowId 审核流程标识
     * @param nodeOrder 审核流程步骤
     * @param checkedBy 审核人
     * @param isCheckCurrentNode 是否针对当前流程做审核
     * @return
     */
    Integer doCheck(Long headerId, Long workFlowId, Short nodeOrder, Long checkedBy, Short isCheckCurrentNode);

    /**
     * 反审领料单
     *
     * @param headerId 领料单标识
     * @param nodeOrder 审核流程步骤
     * @param checkedBy 审核人
     * @return
     */
    Integer doUnCheck(Long headerId, Short nodeOrder, Long checkedBy);
}
